home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / vb_g_prt / gprinter.bas < prev    next >
BASIC Source File  |  1995-09-06  |  46KB  |  1,319 lines

  1. '----------------------------------------------------------------
  2. 'Copyright 1994   Unger Business Systems  All Rights Reserved
  3. 'This code is distributed as shareware.  If you use it, you
  4. 'are required by law to register it.  Please contact Unger
  5. 'Business Systems at 11926 Barrett Brae, Houston, TX 77072-4004
  6. 'or call (713) 498-8517.  Registration fee is $20.00 US
  7. 'See the README.TXT file for more information
  8. '
  9. 'All code, forms, modules, controls, etc. are provided without
  10. 'warranty or liability
  11. '----------------------------------------------------------------
  12.  
  13. Option Explicit
  14.    
  15. Global CRLF$
  16.  
  17. Dim di%, lf As LOGFONT, lp As LOGPEN
  18. Dim dev$, DevName$, DevOutput$, DeviceDriver$
  19. Dim dm As DEVMODE, dmout As DEVMODE
  20. Dim libhnd%
  21. Dim bufsize%
  22. Dim dminstring$, dmoutstring$
  23. Dim dminaddr&, dmoutaddr&
  24. Dim dinfo As DOCINFO
  25. Dim docname$, CurrX%, CurrY%
  26. Dim oldcursor%, CurrentFont%, oldfont%, Oldpen%
  27. Dim lpRect As RECT
  28. Global GenPaperWidth#, GenPaperLength#, GenPaperSize%
  29. Global AbortPrinting%
  30. Global DoShowDevMode%, DoShowDevCaps%
  31. Global DoShowPaperSize%
  32.  
  33. Global Const MaxLinesArray = 30
  34. Global LinesArray(MaxLinesArray)  As String
  35. Global RemainStr$
  36.  
  37. Global NumberOfLines%
  38.  
  39. Const DefPtSize = 10
  40.  
  41. Global CurrentPen%
  42.  
  43. Global PrtXRes%, PrtYRes%, FontIsBold%, OriginalFontWeight%
  44.  
  45. Global Const DT_TOP = &H0
  46. Global Const DT_LEFT = &H0
  47. Global Const DT_CENTER = &H1
  48. Global Const DT_RIGHT = &H2
  49. Global Const DT_VCENTER = &H4
  50. Global Const DT_BOTTOM = &H8
  51. Global Const DT_WORDBREAK = &H10
  52. Global Const DT_SINGLELINE = &H20
  53. Global Const DT_EXPANDTABS = &H40
  54. Global Const DT_TABSTOP = &H80
  55. Global Const DT_NOCLIP = &H100
  56. Global Const DT_EXTERNALLEADING = &H200
  57. Global Const DT_CALCRECT = &H400
  58. Global Const DT_NOPREFIX = &H800
  59. Global Const DT_INTERNAL = &H1000
  60. Global Const SYSTEM_FONT = 13
  61.  
  62. ' color enable/disable for color printers
  63. Global Const DMCOLOR_MONOCHROME = 1
  64. Global Const DMCOLOR_COLOR = 2
  65.  
  66. ' paper selections
  67. ' Warning: The PostScript driver mistakingly uses DMPAPER_ values between
  68. ' 50 and 56.  Don't use this range when defining new paper sizes.
  69.  
  70. Global Const DMPAPER_LETTER = 1         'Letter 8 1/2 x 11 in
  71. Global Const DMPAPER_LETTERSMALL = 2    'Letter Small 8 1/2 x 11 in
  72. Global Const DMPAPER_TABLOID = 3        'Tabloid 11 x 17 in
  73. Global Const DMPAPER_LEDGER = 4         'Ledger 17 x 11 in
  74. Global Const DMPAPER_LEGAL = 5          'Legal 8 1/2 x 14 in
  75. Global Const DMPAPER_STATEMENT = 6      'Statement 5 1/2 x 8 1/2 in
  76. Global Const DMPAPER_EXECUTIVE = 7     'Executive 7 1/4 x 10 1/2 in
  77. Global Const DMPAPER_A3 = 8             'A3 297 x 420 mm
  78. Global Const DMPAPER_A4 = 9             'A4 210 x 297 mm
  79. Global Const DMPAPER_A4SMALL = 10       'A4 Small 210 x 297 mm
  80. Global Const DMPAPER_A5 = 11            'A5 148 x 210 mm
  81. Global Const DMPAPER_B4 = 12            'B4 250 x 354
  82. Global Const DMPAPER_B5 = 13            'B5 182 x 257 mm
  83. Global Const DMPAPER_FOLIO = 14         'Folio 8 1/2 x 13 in
  84. Global Const DMPAPER_QUARTO = 15        'Quarto 215 x 275 mm
  85. Global Const DMPAPER_10X14 = 16         '10x14 in
  86. Global Const DMPAPER_11X17 = 17         '11x17 in
  87. Global Const DMPAPER_NOTE = 18          'Note 8 1/2 x 11 in
  88. Global Const DMPAPER_ENV_9 = 19         'Envelope #9 3 7/8 x 8 7/8
  89. Global Const DMPAPER_ENV_10 = 20        'Envelope #10 4 1/8 x 9 1/2
  90. Global Const DMPAPER_ENV_11 = 21        'Envelope #11 4 1/2 x 10 3/8
  91. Global Const DMPAPER_ENV_12 = 22        'Envelope #12 4 \276 x 11
  92. Global Const DMPAPER_ENV_14 = 23        'Envelope #14 5 x 11 1/2
  93. Global Const DMPAPER_CSHEET = 24        'C size sheet
  94. Global Const DMPAPER_DSHEET = 25        'D size sheet
  95. Global Const DMPAPER_ESHEET = 26        'E size sheet
  96. Global Const DMPAPER_ENV_DL = 27        'Envelope DL 110 x 220mm
  97. Global Const DMPAPER_ENV_C5 = 28        'Envelope C5 162 x 229 mm
  98. Global Const DMPAPER_ENV_C3 = 29        'Envelope C3  324 x 458 mm
  99. Global Const DMPAPER_ENV_C4 = 30        'Envelope C4  229 x 324 mm
  100. Global Const DMPAPER_ENV_C6 = 31        'Envelope C6  114 x 162 mm
  101. Global Const DMPAPER_ENV_C65 = 32       'Envelope C65 114 x 229 mm
  102. Global Const DMPAPER_ENV_B4 = 33        'Envelope B4  250 x 353 mm
  103. Global Const DMPAPER_ENV_B5 = 34        'Envelope B5  176 x 250 mm
  104. Global Const DMPAPER_ENV_B6 = 35        'Envelope B6  176 x 125 mm
  105. Global Const DMPAPER_ENV_ITALY = 36     'Envelope 110 x 230 mm
  106. Global Const DMPAPER_ENV_MONARCH = 37   'Envelope Monarch 3.875 x 7.5 in
  107. Global Const DMPAPER_ENV_PERSONAL = 38  '6 3/4 Envelope 3 5/8 x 6 1/2 in
  108. Global Const DMPAPER_FANFOLD_US = 39    'US Std Fanfold 14 7/8 x 11 in
  109. Global Const DMPAPER_FANFOLD_STD_GERMAN = 40  'German Std Fanfold 8 1/2 x 12 in
  110. Global Const DMPAPER_FANFOLD_LGL_GERMAN = 41  'German Legal Fanfold 8 1/2 x 13 in
  111.  
  112. Global Const DMPAPER_USER = 256
  113.  
  114. ' printer bin selections
  115. Global Const DMBIN_UPPER = 1
  116. Global Const DMBIN_ONLYONE = 1
  117. Global Const DMBIN_LOWER = 2
  118. Global Const DMBIN_MIDDLE = 3
  119. Global Const DMBIN_MANUAL = 4
  120. Global Const DMBIN_ENVELOPE = 5
  121. Global Const DMBIN_ENVMANUAL = 6
  122. Global Const DMBIN_AUTO = 7
  123. Global Const DMBIN_TRACTOR = 8
  124. Global Const DMBIN_SMALLFMT = 9
  125. Global Const DMBIN_LARGEFMT = 10
  126. Global Const DMBIN_LARGECAPACITY = 11
  127. Global Const DMBIN_CASSETTE = 14
  128.  
  129. Global Const DMBIN_USER = 256  'device specific bins start here
  130.  
  131. ' print qualities
  132. Global Const DMRES_DRAFT = -1
  133. Global Const DMRES_LOW = -2
  134. Global Const DMRES_MEDIUM = -3
  135. Global Const DMRES_HIGH = -4
  136.  
  137. ' Printer duplex enable
  138. Global Const DMDUP_SIMPLEX = 1
  139. Global Const DMDUP_VERTICAL = 2
  140. Global Const DMDUP_HORIZONTAL = 3
  141.  
  142. ' TrueType options
  143. Global Const DMTT_BITMAP = 1    'print TT fonts as graphics
  144. Global Const DMTT_DOWNLOAD = 2  'download TT fonts as soft fonts
  145. Global Const DMTT_SUBDEV = 3    'substitute device fonts for TT fonts
  146.  
  147. '  Pen Styles
  148. Global Const PS_SOLID = 0
  149. Global Const PS_DASH = 1        '  -------
  150. Global Const PS_DOT = 2 '  .......
  151. Global Const PS_DASHDOT = 3     '  _._._._
  152. Global Const PS_DASHDOTDOT = 4  '  _.._.._
  153. Global Const PS_NULL = 5
  154. Global Const PS_INSIDEFRAME = 6
  155.  
  156. Global Const TMPF_FIXED_PITCH = 1
  157. Global Const TMPF_VECTOR = 2
  158. Global Const TMPF_DEVICE = 8
  159. Global Const TMPF_TRUETYPE = 4
  160.  
  161. Global Const DM_IN_BUFFER = 8
  162. Global Const DM_IN_PROMPT = 4
  163. Global Const DM_OUT_BUFFER = 2
  164. Global Const DMORIENT_PORTRAIT = 1
  165. Global Const DMORIENT_LANDSCAPE = 2
  166. Global Const SP_OUTOFDISK = (-4)
  167.  
  168. ' field selection bits
  169. Global Const DM_ORIENTATION = &H1&
  170. Global Const DM_PAPERSIZE = &H2&
  171. Global Const DM_PAPERLENGTH = &H4&
  172. Global Const DM_PAPERWIDTH = &H8&
  173. Global Const DM_SCALE = &H10&
  174. Global Const DM_COPIES = &H100&
  175. Global Const DM_DEFAULTSOURCE = &H200&
  176. Global Const DM_PRINTQUALITY = &H400&
  177. Global Const DM_COLOR = &H800&
  178. Global Const DM_DUPLEX = &H1000&
  179. Global Const DM_YRESOLUTION = &H2000&
  180. Global Const DM_TTOPTION = &H4000&
  181.  
  182. ' device capabilities indices
  183. Global Const DC_FIELDS = 1
  184. Global Const DC_PAPERS = 2
  185. Global Const DC_PAPERSIZE = 3
  186. Global Const DC_MINEXTENT = 4
  187. Global Const DC_MAXEXTENT = 5
  188. Global Const DC_BINS = 6
  189. Global Const DC_DUPLEX = 7
  190. Global Const DC_SIZE = 8
  191. Global Const DC_EXTRA = 9
  192. Global Const DC_VERSION = 10
  193. Global Const DC_DRIVER = 11
  194. Global Const DC_BINNAMES = 12
  195. Global Const DC_ENUMRESOLUTIONS = 13
  196. Global Const DC_FILEDEPENDENCIES = 14
  197. Global Const DC_TRUETYPE = 15
  198. Global Const DC_PAPERNAMES = 16
  199. Global Const DC_ORIENTATION = 17
  200. Global Const DC_COPIES = 18
  201.  
  202. ' DC_TRUETYPE bit fields
  203. Global Const DCTT_BITMAP = &H1&
  204. Global Const DCTT_DOWNLOAD = &H2&
  205. Global Const DCTT_SUBDEV = &H4&
  206.  
  207. Global Const PD_RETURNDC = &H100&
  208.  
  209. Declare Function GetTextExtentPoint% Lib "GDI" (ByVal hDC%, ByVal lpszString$, ByVal cbString%, lpSize As SIZEAPI)
  210. Declare Function GetStockObject% Lib "GDI" (ByVal nIndex%)
  211. Declare Function SelectObject% Lib "GDI" (ByVal hDC%, ByVal hObject%)
  212. Declare Function GetObject2% Lib "GDI" Alias "GetObject" (ByVal hObject%, ByVal nCount%, ByVal lpObject&)
  213. Declare Function CreateFontIndirect% Lib "GDI" (lpLogFont As LOGFONT)
  214. Declare Function DeleteObject% Lib "GDI" (ByVal hObject%)
  215. Declare Function MoveTo& Lib "GDI" (ByVal hDC%, ByVal x%, ByVal y%)
  216. Declare Function L